<?php
/**
 * Created by PhpStorm.
 * Date: 2021/8/6 21:18
 * Author:Guo Zhichao
 * File: MagicFunc.php
 * Desc:
 */

namespace Test;

//魔术方法的例子
class MagicFunc
{
    private $array = array();
    //当给对象不存在的属性赋值时，会调用__set方法
    function __set($name, $value)
    {
        $this->array[$name] = $value;
    }
    //当访问对象不存在的属性时，会调用__get方法
    function __get($name)
    {
        return $this->array[$name];
    }
    //调用对象不存在的方法时，会回调__call魔术方法
    function __call($name, $arguments)
    {
    }
    //调用类不存在的静态方法时，会回调__callStatic魔术方法
    static function __callStatic($func, $param){

    }
    //当echo一个对象的时候，会回调__toString魔术方法
    function __toString()
    {
        return __CLASS__;
    }
    //当把一个对象当成函数去用时，就会回调__invoke魔术方法
    //如 $obj = new Class(); echo $obj();
    function __invoke($param)
    {
        var_dump($param);
    }
}
